package com.tedu.day02.oop;

/**
 * 抽象类：抽象类与抽象方法    关键字：abstract
 * 类：只能提供行为概念，没有具体实现行为
 *
 * 与面向对象--多肽绝对关系
 * 使用多肽创建多肽类对象，抽象类本身无法常见对象，需要使用多肽完成抽象类创建
 * 什么是抽象类？
 * 复杂项目时，需要在不同类下实现不同功能首先抽象类【安卓常用】
 *
 * 定义抽象类与抽象方法
 * 抽象类：修饰符abstract class leiming{}--毫无意义，必须结合抽象方法--
 * 抽象方法：修饰符abstract返回值  方法（参数）；--没有具体的实现
 * 抽象类实例化：创建对象：抽象类自身无法实例化
 * 1.创建【N个】子类，继承抽象父类，子类一定实现抽象父类的所有抽象方法
 * 2.使用面向对象：多肽【向上造型  抽象类 引用=new】 抽象子类（）；
 * 注意：抽象类一定发生重写，子类继承父类，也可以叫做”实现类“
 */
abstract class Animals{
    public abstract void say();

    //1.定义一个由final修饰的抽象方法？  错
    //4.可以定义一个静态抽象变量？错
    //static abstract int j=1;
    //5.定义静态抽象方法【无实现】
    //public static abstract void eat();
  //  public final abstract void sleep();
   // 2.定义一个抽象的变量可以吗？   cuo
    //3.定义静态变量？
    static int i=1;
    //6.定义静态的方法【无实现】
    public static void eat(){};
   // 5.6总结：抽象方法或静态方法，定义方法：修饰符static或abstract
    //7.可以定义内部类：静态内部类
    static class Sos{}
    //8.抽象类有构造器吗？  对
    public Animals(){

    }
    //9.抽象类有普通实现方法吗？
    public void run(){

    }




     }
     //10.抽象类可以继承抽象类？            实现：两个抽象类形容一个实现
abstract class Thing extends Animals{
    public abstract void sleep();
     }
     //目的：两个抽象类中所有抽象方法--继承【子】





class Person1 extends Animals{
    @Override
    public void say() {
        System.out.println("人说话");

    }
}

public class 抽象类 {
    public static void main(String[] args){
        //抽象类无法创建对象，必须用多肽
        Animals a=new Person1();
        a.say();
    }
}








